In [1]:
%pylab inline
import numpy as np #  convert list to array

import matplotlib.pyplot as plt
from ipywidgets import *  #interaktivitáshoz szükséges függvények
from mpl_toolkits.mplot3d import * #3D-s ábrák alcsomagja

#from scipy import special 
from scipy.special import jn,fresnel
Populating the interactive namespace from numpy and matplotlib

Optikai rács Fraunhofer-diffrakcióval

$U(\mathbf{k}) = S_N(\mathbf{k}) F(\mathbf{k})$, ahol

$S_N(\mathbf{k}) = \sum_{\mathbf{R}} e^{i \mathbf{k}\mathbf{R}}$ és $F(\mathbf{k}) = \int_{1r\acute es} d^2 \mathbf{s} T(\mathbf{s})\, e^{i \mathbf{k}\mathbf{s}}$, ahol $T(\mathbf{s})$ a rés áteresztő kepessége, tipikusan 1 a résen belul.

In [2]:
# Az abra kimentesehez az alabbiakat a plt.show()  ele kell tenni!!! 

#savefig('fig_rainbow_p2_1ray.pdf');  # Abra kimentese
#savefig('fig_rainbow_p2_1ray.eps');  # Abra kimentese

# Abra es fontmeretek
xfig_meret= 9   #    12 nagy abrahoz
yfig_meret= 6    #   12 nagy abrahoz
xyticks_meret= 15  #  20 nagy abrahoz
xylabel_meret= 20  #  30 nagy abrahoz
legend_meret= 17   #  30 nagy abrahoz
In [3]:
def int_N_res(x,k,d,Nr,a):
    amp_1=int_1res(x,k,d)[0]
    amp_Nr = amp_1*sin(x*k/2*a*Nr)/sin(x*k/2*a)/Nr
    #amp_Nr = sin(x*k/2*a*Nr)/sin(x*k/2*a)
    int_Nr=(abs(amp_Nr))**2
    return(int_Nr)
    
def int_1res(x,k,d):
    amp = (sin(k*d*x/2))/(k*d*x/2)
    intenz = (abs(amp))**2
    return(amp,intenz)

def int_kor(x):
    tmp = 4*(jn(1,x)/x)**2  
    return(tmp)

def struct_fact_1dim(u,Rp): 
    Nr = len(Rp)
    struct=0+0*1j
    for i in range(Nr):
        struct=struct+exp(1j*2*pi*u*Rp[i])
    struct2=abs(struct/Nr)**2   
                   
    return(struct2)

def struct_fact(u,v,Rp): 
    Nr = len(Rp)
    struct=0+0*1j
    for i in range(Nr):
        struct=struct+exp(1j*2*pi*(u*Rp[i][0]+v*Rp[i][1]))
                   
    return(struct/Nr)
In [81]:
def rajz_2dim_kor(Rp, cimek, uv_size, intmax):

    #figsize(xfig_meret,yfig_meret)

    #  direct racs 
    t = arange(0.0, 2.0*pi, 0.01)

    figsize(12,8)
    subplot(1,4,1,aspect=1)

    scale=0.5
    [plot(scale*Rp_[0]+ Rpa*cos(t),scale*Rp_[1]+ Rpa*sin(t), color='k', lw=3) for Rp_ in Rp]
    title(cimek[0], fontsize=16)
    axis('off');

    #  egy res diffrakcioja 
    Nminta = 200  #  a (kx,ky) mintaveteli szama kx es ky menten, kulon-kulon

    epsi=10**(-7)  # azert kell,mert a kor alaku res intenzitasa divergal a kx=ky=0-nal, 
               # csak hataresetben ad helyes erteket. 
    print("első minimum = sqrt(u_1^2+v1^2)= ", 1.22/2/Rpa)

    #xyr = 20.0 # 12.1 # maximalis kx,ky tartomany, -xyr < kx,ky < xyr
    xyr = uv_size[0]
    u,v = meshgrid(linspace(-xyr,xyr,Nminta),linspace(-xyr,xyr,Nminta)) #mintavételezési pontok legyártása
    amp2kor=int_kor(2*pi*Rpa*sqrt((u+epsi)**2+v**2)) #függvény kiértékelés
    

    subplot(1,4,2,aspect=1)

    #intmax=0.005
    contourf(u,v,amp2kor,levels=linspace(0.,intmax[0],10),cmap='gray')
    title(cimek[1],fontsize=16);
    xlabel(r'$u$',fontsize=20);
    ylabel(r'$v$',fontsize=20);
   
    #colorbar(); 
    
    # szerkezeti tenyezo rajzolas 
    xyr = uv_size[1]

    Nminta=200
    u,v = meshgrid(linspace(-xyr,xyr,Nminta),linspace(-xyr,xyr,Nminta)) #mintavételezési pontok
    amp2struct=abs(struct_fact(u,v,Rp))**2
    
    subplot(1,4,3,aspect=1)

    #intmax=0.005
    contourf(u,v,amp2struct,levels=linspace(0.,intmax[1],10),cmap='gray')
    title(cimek[2],fontsize=16);
    xlabel(r'$u$',fontsize=20);
    ylabel(r'$v$',fontsize=20);

    #colorbar();
    
    # teljes diffracios kep rajzolas 
    
    subplot(1,4,4,aspect=1)

    xyr = uv_size[2]

    u,v = meshgrid(linspace(-xyr,xyr,Nminta),linspace(-xyr,xyr,Nminta)) #mintavételezési pontok legyártása
    amp2=int_kor(2*pi*Rpa*sqrt((u+epsi)**2+v**2))*abs(struct_fact(u,v,Rp))**2 #függvény kiértékelés
    #amp2=int_kor(Rpa*sqrt((u+epsi)**2+v**2))*abs(struct_fact(u,v,Rp))**2 #függvény kiértékelés


    #intmax=0.01
    contourf(u,v,amp2,levels=linspace(0.,intmax[2],10),cmap='gray')
    title(cimek[3],fontsize=16);

    xlabel(r'$u$',fontsize=20);
    ylabel(r'$v$',fontsize=20);

    #colorbar();
    tight_layout();

    

1) $N$ darab rés periodikusan elhelyezve, egydimenzióban

$a$ a rácsállandó, $d$ egy rés szélessége.

$\frac{U(\alpha)}{U_0} = \frac{\sin\left(\pi u N \right)}{\sin\left(\pi u \right)}\, U_{1r\acute{e}s}(\alpha)$, ahol

$U_{1r\acute{e}s}(\alpha) = \frac{\sin\left(\frac{k}{2} d \sin \alpha\right)}{\frac{k}{2} d \sin \alpha}= \frac{\sin \pi u \frac{d}{a}}{ \pi u \frac{d}{a}}$, és

$2\pi \, u= k a \sin \alpha$, $k = \frac{2\pi}{\lambda}$ a hullámszám.

In [5]:
lam =1;
d = 7*lam;
a = 3*d
apd=a/d

Nr=5;
#Nr=17;
print('Rácspontok száma = ',Nr, '\n')

mrange=[-4,-3,-2,-1,0,1,2,3,4]
xm= 1.1*mrange[-1]*lam/a

sinvec= linspace(-xm,xm,700)

k=2*pi/lam

intvec=int_N_res(sinvec,k,d,Nr,a)
int1res=int_1res(sinvec,k,d)[1]
intracs=(abs((sin(sinvec*k/2*a*Nr)/sin(sinvec*k/2*a)/Nr)))**2

sinzero=[]
[sinzero.append(m*lam/a) for m in mrange]

xs=[]
for m in mrange:
    if (m !=0):
        xs.append(str(m) +r'$\,\frac{\lambda}{a}$')
    else:
        xs.append(str(m)) 

figsize(8,9)  
subplot(3,1,1)

#figsize(xfig_meret,yfig_meret)

plot(sinvec,intracs, 'k-');
labels = xs
xticks(sinzero,labels,fontsize=20);
title(r'$\mathrm{Szerkezeti \,\, tényező, \,\,\, structure \,\, factor}$',fontsize=20)


axis('tight')
xlim=(-xm,xm)

subplot(3,1,2)

plot(sinvec,int1res, 'r--');
labels = xs
xticks(sinzero,labels,fontsize=20);
title(r'$\mathrm{Alaktényező, \,\,\, form \,\,factor}$',fontsize=20)

axis('tight')
xlim=(-xm,xm)

subplot(3,1,3)

plot(sinvec,intvec, 'b-', label='totál');
plot(sinvec,int1res, 'r--', lw=2, label='1 rés');
     
labels = xs
xticks(sinzero,labels,fontsize=20);
#title('Optikai rács',fontsize=20)
title(str(Nr) + ' darab d széles rés egydimenzióban elhelyezve \n a/d = '+ str(apd),fontsize=16);

legend(loc='upper right',fontsize = 15)

axis('tight')
xlim=(-xm,xm)

grid();

tight_layout();
Rácspontok száma =  5 

F. 207 feladat

Gnädig Péter, Honyek Gyula, Vigh Máté: 333+ furfangos feladat fizikából, Typotex Kiadó, 2017 könyvből

Egy furcsa optikai rácson a rések nem egyenlő közönként helyezkednek el: a szomszédos rések távolsága felváltva $d$ és $3d$. Milyen elhajlási kép alakul ki az $L$ távolságra elhelyezett ernyőn, ha a rácsot (annak síkjára merőlegesen) $\lambda$ hullámhosszúságú lézerfénnyel világítjuk meg? (A rések szélessége egyforma és sokkal kisebb a távolságuknál, valamint $\lambda \ll d$.)

In [6]:
# Ncell darab racspont generalasa

Ncell=15  #  minel nagyobb, annal elesebbek lesznek a diffrakcios csucsok.  

Rp = []
for i in range(Ncell):
    Rp.append(i)
for i in range(Ncell):
    Rp.append(i+1/4)


print('Rácspontok száma = 2*Ncell = ',len(Rp), '\n')
#print('Rácspontok koordinátája, Rp = ',around(Rp,3))
print('Rácspontok koordinátája, Rp = ',Rp)


xyr=4.1
Nminta=700

uvec=linspace(-xyr,xyr,Nminta)
amp2=struct_fact_1dim(uvec,Rp)

figsize(10,5)
plot(uvec,amp2, 'b-',label='totál')
plot(uvec,(cos(pi/4*uvec))**2, 'r--', label='1 rés')
xlabel(r'$x=\frac{\lambda L}{a}\, u = \frac{\lambda L}{4d}\, u$',fontsize=20)

axis('tight')
xlim=(-xyr,xyr)

legend(loc='upper right',fontsize = 15)


grid();
Rácspontok száma = 2*Ncell =  30 

Rácspontok koordinátája, Rp =  [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 0.25, 1.25, 2.25, 3.25, 4.25, 5.25, 6.25, 7.25, 8.25, 9.25, 10.25, 11.25, 12.25, 13.25, 14.25]

Kétdimenziós diffrakció

$R$ sugarú kör alakú rések $a$ rácsállandójú rácspontokban vannak elhelyezve.

A rács elemi rácsvektora (rácsállandó egységekben): $\mathbf{a}_1, \mathbf{a}_2 $.

$\mathbf{k} = (k_x,k_y,k_z)= (k_x,k_y,k \cos \vartheta)$, ahol $k = |\mathbf{k}|= \frac{2\pi}{\lambda}$ és $\vartheta $ a $\mathbf{k}$ iránya a rácsra merőleges $z$ tengelyhez viszonyítva.

Új paraméterezés: $(k_x,k_y) = \frac{2\pi}{a}\, (u,v)$. Ekkor

$\sqrt{k_x^2+k_y^2}= k \sin\vartheta = \frac{2\pi}{a}\, \sqrt{u^2+v^2}$ és

$k R \sin\vartheta = 2\pi\, \frac{R}{a}\, \sqrt{u^2+v^2} $, ez kerül be az egy rés diffrakcióját leíró képletbe.

Végül a kétdimenziós diffrakciós képet $(u,v)$ függvényében ábrázoljuk.

Négyzetrácsban elhelyezett kör alakú rések

Nx, Ny darab az x, y irányban

In [7]:
#  R ---> a kor alaku res sugara 
#  a ---> racsallando

Nx = 7 # Nx ---> elemi cellak szama az a1 vektor iranyaban
Ny = Nx #  Ny ---> elemi cellak szama az a2 vektor iranyaban

a1,a2=[1,0], [0,1]   #  elemi rácsvektor rácsállandó egységekben

Rpa=0.2   #   Rpa ---> R/a

# Rp racspontok generalasa (racsallando egysegekben):
Rp=[]
for n1 in range(Nx):
    for n2 in range(Ny):
        Rp.append([n1*a1[0]+n2*a2[0],n1*a1[1]+n2*a2[1]])

print('Rácspontok száma = ',len(Rp), '\n')
print('Rácspontok koordinátája, Rp = ',Rp)

Nminta = 500  #  a (kx,ky) mintaveteli szama kx es ky menten, kulon-kulon
xyr = 3.1 # maximalis kx,ky tartomany, -xyr < kx,ky < xyr

epsi=10**(-7)  # azert kell,mert a kor alaku res intenzitasa divergal a kx=ky=0-nal, 
               # csak hataresetben ad helyes erteket. 

xu=linspace(-xyr,xyr,Nminta)  #  kx mintaveteli pontok generalasa, ky=0 most.

figsize(8,6)

plot(xu,int_kor(2*pi*Rpa*sqrt((xu+epsi)**2+0**2)),'r--',lw=2, label='1 rés')
plot(xu,abs(struct_fact(xu,0,Rp))**2, 'g-',label='struct. factor')
plot(xu,int_kor(2*pi*Rpa*sqrt((xu+epsi)**2+0**2))*abs(struct_fact(xu,0,Rp))**2, lw=1,label='totál')


#title('Optikai négyzetrács, Nx,Ny =' + str(Nx)+', '+str(Ny));
title('Optikai négyzetrács, Nx,Ny = ' + str(Nx)+', '+str(Ny)+'\n R/a = '+ str(Rpa),fontsize=16);

xlabel(r'$u$',fontsize=20, rotation=0)

axis('tight')

legend(loc='upper right',fontsize = 15)

xlim=(-xyr,xyr)
ylim(0,1.05)


grid();
Rácspontok száma =  49 

Rácspontok koordinátája, Rp =  [[0, 0], [0, 1], [0, 2], [0, 3], [0, 4], [0, 5], [0, 6], [1, 0], [1, 1], [1, 2], [1, 3], [1, 4], [1, 5], [1, 6], [2, 0], [2, 1], [2, 2], [2, 3], [2, 4], [2, 5], [2, 6], [3, 0], [3, 1], [3, 2], [3, 3], [3, 4], [3, 5], [3, 6], [4, 0], [4, 1], [4, 2], [4, 3], [4, 4], [4, 5], [4, 6], [5, 0], [5, 1], [5, 2], [5, 3], [5, 4], [5, 5], [5, 6], [6, 0], [6, 1], [6, 2], [6, 3], [6, 4], [6, 5], [6, 6]]

Ugyanez kétdimenzióban:

In [112]:
cimek=['Direkt rács','Egy kör alakú rés','Szerkezeti faktor','Diffrakciós kép']

#  R ---> a kor alaku res sugara 
#  a ---> racsallando

Nx = 5 # Nx ---> elemi cellak szama az a1 vektor iranyaban
Ny = Nx #  Ny ---> elemi cellak szama az a2 vektor iranyaban

a1,a2=[1,0], [0,1]   #  elemi rácsvektor rácsállandó egységekben

Rpa=0.1   #   Rpa ---> R/a

# Rp racspontok generalasa (racsallando egysegekben):
Rp=[]
for n1 in range(Nx):
    for n2 in range(Ny):
        Rp.append([n1*a1[0]+n2*a2[0],n1*a1[1]+n2*a2[1]])

print('Rácspontok száma $x$ irányban = ',Nx, '\n')
print('Rácspontok száma $y$ irányban = ',Ny, '\n')
print('Rácspontok száma = ',len(Rp), '\n')
print('Rácspontok koordinátája, Rp = ',Rp, '\n')

xyr = [20,5,17]
intmax = [0.005,0.1, 0.0025]

   
rajz_2dim_kor(Rp, cimek, xyr, intmax)
Rácspontok száma $x$ irányban =  5 

Rácspontok száma $y$ irányban =  5 

Rácspontok száma =  25 

Rácspontok koordinátája, Rp =  [[0, 0], [0, 1], [0, 2], [0, 3], [0, 4], [1, 0], [1, 1], [1, 2], [1, 3], [1, 4], [2, 0], [2, 1], [2, 2], [2, 3], [2, 4], [3, 0], [3, 1], [3, 2], [3, 3], [3, 4], [4, 0], [4, 1], [4, 2], [4, 3], [4, 4]] 

első minimum = sqrt(u_1^2+v1^2)=  6.1

Két kör alakú rés

In [114]:
cimek=['Direkt rács','Egy kör alakú rés','Szerkezeti faktor','Diffrakciós kép']
#  R ---> a kor alaku res sugara 
#  a ---> racsallando

Rpa=0.1  #   Rpa ---> R/a

# Rp racspontok generalasa (racsallando egysegekben), most 2 racspont van:
Rp=[[0, 0], [1, 0]]

print('Rácspontok száma = ',len(Rp), '\n')
print('Rácspontok koordinátája, Rp = ',Rp)

xyr = [20,5,20]
intmax = [0.005,0.05, 0.005]
rajz_2dim_kor(Rp, cimek, xyr, intmax)
Rácspontok száma =  2 

Rácspontok koordinátája, Rp =  [[0, 0], [1, 0]]
első minimum = sqrt(u_1^2+v1^2)=  6.1
In [116]:
xyr=12.

Nminta=200

u,v = meshgrid(linspace(-xyr,xyr,Nminta),linspace(-xyr,xyr,Nminta)) #mintavételezési pontok legyártása
epsi=10**(-7)
amp2=int_kor(2*pi*Rpa*sqrt((u+epsi)**2+v**2))*abs(struct_fact(u,v,Rp))**2 #függvény kiértékelés

print("első minimum = sqrt(u_1^2+v1^2)= ", 1.22/2/Rpa)

figsize(12,8)

fig = plt.figure()
ax = fig.gca(projection='3d')

surf = ax.plot_surface(u, v, amp2, rstride=1, cstride=1, cmap=cm.coolwarm,
                       linewidth=0, antialiased=True)
title('Két kör alakú rés, R/a = '+ str(Rpa),fontsize=16);

xlabel(r'$u$',fontsize=20);
ylabel(r'$v$',fontsize=20);
első minimum = sqrt(u_1^2+v1^2)=  6.1
In [70]:
cimek=['Direkt rács','Egy kör alakú rés','Szerkezeti faktor','Diffrakciós kép']
#  R ---> a kor alaku res sugara 
#  a ---> racsallando, egysegnyi

Rpa=0.1  #   Rpa ---> R/a

# Rp racspontok generalasa (racsallando egysegekben), most 2 racspont van:
Rp=[[0, 0], [0, 1]]

print('Rácspontok száma = ',len(Rp), '\n')
print('Rácspontok koordinátája, Rp = ',Rp)

xyr = [20,5,20]
intmax = [0.005,0.05, 0.005]
rajz_2dim_kor(Rp, cimek, xyr, intmax)
Rácspontok száma =  2 

Rácspontok koordinátája, Rp =  [[0, 0], [0, 1]]
első minimum = sqrt(u_1^2+v1^2)=  6.1
In [77]:
cimek=['Direkt rács','Egy kör alakú rés','Szerkezeti faktor','Diffrakciós kép']
#  R ---> a kor alaku res sugara 
#  a ---> racsallando, egysegnyi

Rpa=0.1  #   Rpa ---> R/a

# Rp racspontok generalasa (racsallando egysegekben), most 2 racspont van:
Rp=[[0, 0], [1, 1]]

print('Rácspontok száma = ',len(Rp), '\n')
print('Rácspontok koordinátája, Rp = ',Rp)

xyr = [20,5,12]
intmax = [0.005,0.05, 0.005]
rajz_2dim_kor(Rp, cimek, xyr, intmax)
Rácspontok száma =  2 

Rácspontok koordinátája, Rp =  [[0, 0], [1, 1]]
első minimum = sqrt(u_1^2+v1^2)=  6.1

Két különböző sugarú kör alakú rés

In [86]:
#  R ---> a kor alaku res sugara 
#  a ---> racsallando

a1,a2=[1,0], [0,1]   #  elemi rácsvektor rácsállandó egységekben

Rpa1=0.1   #   Rpa ---> R/a
Rpa2=0.2   #   Rpa ---> R/a

# Rp racspontok generalasa (racsallando egysegekben), most 2 racspont van:
Rp=[[0, 0], [1, 0]]
#Rp=[[0, 0], [0, 1]]


print('Rácspontok száma = ',len(Rp), '\n')
print('Rácspontok koordinátája, Rp = ',Rp, '\n')

Nminta = 500  #  a (kx,ky) mintaveteli szama kx es ky menten, kulon-kulon

epsi=10**(-7)  # azert kell,mert a kor alaku res intenzitasa divergal a kx=ky=0-nal, 
               # csak hataresetben ad helyes erteket. 
print("első minimum = sqrt(u_1^2+v1^2)= ", 1.22/2/Rpa)

xyr = 20.0 # 12.1 # maximalis kx,ky tartomany, -xyr < kx,ky < xyr

u,v = meshgrid(linspace(-xyr,xyr,Nminta),linspace(-xyr,xyr,Nminta)) #mintavételezési pontok legyártása
amp2kor=int_kor(2*pi*Rpa1*sqrt((u+epsi)**2+v**2)) #függvény kiértékelés

figsize(14,8)   
#figsize(xfig_meret,yfig_meret)

#  direct racs 
t = arange(0.0, 2.0*pi, 0.01)

subplot(1,3,1,aspect=1)

plot(Rp[0][0]+ Rpa2*cos(t),Rp[0][1]+ Rpa2*sin(t), color='k', lw=3) 
plot(Rp[1][0]+ Rpa1*cos(t),Rp[1][1]+ Rpa1*sin(t), color='k', lw=3) 
axis('off');


subplot(1,3,2,aspect=1)

intmax=0.005
contourf(u,v,amp2kor,levels=linspace(0.,intmax,10),cmap='gray')
title('Egy kör alakú rés',fontsize=16);
xlabel(r'$u$',fontsize=20);
ylabel(r'$v$',fontsize=20);

#colorbar();

subplot(1,3,3,aspect=1)

Nminta = 500
xyr=17

u,v = meshgrid(linspace(-xyr,xyr,Nminta),linspace(-xyr,xyr,Nminta)) #mintavételezési pontok legyártása
x1=2*pi*Rpa1*sqrt((u+epsi)**2+v**2)
x2=2*pi*Rpa2*sqrt((u+epsi)**2+v**2)

amp=  2*jn(1,x1)/x1*exp(1j*2*pi*(u*Rp[0][0]+v*Rp[0][1]))\
           +2*jn(1,x2)/x2*exp(1j*2*pi*(u*Rp[1][0]+v*Rp[1][1])) 
amp2=(abs(amp/2))**2

intmax=0.005
contourf(u,v,amp2,levels=linspace(0.,intmax,10),cmap='gray')

title('Két kör alakú rés, \n $R_1/a = $'+ str(Rpa1) +' and $R_2/a = $' + str(Rpa2),fontsize=16);
xlabel(r'$u$',fontsize=20);
ylabel(r'$v$',fontsize=20);

#colorbar();
tight_layout;
Rácspontok száma =  2 

Rácspontok koordinátája, Rp =  [[0, 0], [1, 0]] 

első minimum = sqrt(u_1^2+v1^2)=  6.1

Négy köralakú rés egy $a$ oldalú négyzet sarkaiban

In [88]:
cimek=['Direkt rács','Egy kör alakú rés','Szerkezeti faktor','Diffrakciós kép']
#  R ---> a kor alaku res sugara 
#  a ---> racsallando, egysegnyi

Rpa=0.1  #   Rpa ---> R/a

# Rp racspontok generalasa (racsallando egysegekben):
Rp=[[0, 0], [1, 0],[0,1],[1,1]]

print('Rácspontok száma = ',len(Rp), '\n')
print('Rácspontok koordinátája, Rp = ',Rp)

xyr = [20,5,15]
intmax = [0.005,0.05, 0.005]
rajz_2dim_kor(Rp, cimek, xyr, intmax)
Rácspontok száma =  4 

Rácspontok koordinátája, Rp =  [[0, 0], [1, 0], [0, 1], [1, 1]]
első minimum = sqrt(u_1^2+v1^2)=  6.1

Három köralakú rés egy $a$ oldalú egyenlő oldalú háromszög sarkaiban

In [89]:
cimek=['Direkt rács','Egy kör alakú rés','Szerkezeti faktor','Diffrakciós kép']
#  R ---> a kor alaku res sugara 
#  a ---> racsallando, egysegnyi

Rpa=0.1  #   Rpa ---> R/a

# Rp racspontok generalasa (racsallando egysegekben):
Rp=[[0, 0], [1, 0],[1/2,sqrt(3)/2]]

print('Rácspontok száma = ',len(Rp), '\n')
print('Rácspontok koordinátája, Rp = ',Rp)

xyr = [20,5,16]
intmax = [0.005,0.2, 0.005]
rajz_2dim_kor(Rp, cimek, xyr, intmax)
Rácspontok száma =  3 

Rácspontok koordinátája, Rp =  [[0, 0], [1, 0], [0.5, 0.8660254037844386]]
első minimum = sqrt(u_1^2+v1^2)=  6.1

$+$ jel sarkaiban és középen 5 köralakú rés, a két-két szélső kör közepe $2a$ távolságban van.

In [91]:
cimek=['Direkt rács','Egy kör alakú rés','Szerkezeti faktor','Diffrakciós kép']
#  R ---> a kor alaku res sugara 
#  a ---> racsallando, egysegnyi

Rpa=0.1  #   Rpa ---> R/a

# Rp racspontok generalasa (racsallando egysegekben):
Rp=[[0, 0], [1, 0],[-1,0],[0, 1],[0, -1]]

print('Rácspontok száma = ',len(Rp), '\n')
print('Rácspontok koordinátája, Rp = ',Rp)

xyr = [20,5,15]
intmax = [0.005,0.2, 0.005]
rajz_2dim_kor(Rp, cimek, xyr, intmax)
Rácspontok száma =  5 

Rácspontok koordinátája, Rp =  [[0, 0], [1, 0], [-1, 0], [0, 1], [0, -1]]
első minimum = sqrt(u_1^2+v1^2)=  6.1

A dobokocka 5-os oldala, sarkaiban és középen 5 köralakú rés, a két-két szélső kör közepe $2a$ távolságban van.

In [96]:
cimek=['Direkt rács','Egy kör alakú rés','Szerkezeti faktor','Diffrakciós kép']
#  R ---> a kor alaku res sugara 
#  a ---> racsallando, egysegnyi

Rpa=0.1  #   Rpa ---> R/a

# Rp racspontok generalasa (racsallando egysegekben):
Rp=[[0, 0], [1, 1],[-1,1],[-1, -1],[1, -1]]

print('Rácspontok száma = ',len(Rp), '\n')
print('Rácspontok koordinátája, Rp = ',Rp)

xyr = [20,5,15]
intmax = [0.005,0.3, 0.005]
rajz_2dim_kor(Rp, cimek, xyr, intmax)
Rácspontok száma =  5 

Rácspontok koordinátája, Rp =  [[0, 0], [1, 1], [-1, 1], [-1, -1], [1, -1]]
első minimum = sqrt(u_1^2+v1^2)=  6.1

$F$-szerű jel sarkaiban 6 kör alakú rés

In [97]:
cimek=['Direkt rács','Egy kör alakú rés','Szerkezeti faktor','Diffrakciós kép']
#  R ---> a kor alaku res sugara 
#  a ---> racsallando, egysegnyi

Rpa=0.1  #   Rpa ---> R/a

# Rp racspontok generalasa (racsallando egysegekben):
Rp=[[0, 0], [1, 0],[0, 1],[1, 1],[0,-1],[0,-2]]

print('Rácspontok száma = ',len(Rp), '\n')
print('Rácspontok koordinátája, Rp = ',Rp)

xyr = [20,5,15]
intmax = [0.005,0.2, 0.005]
rajz_2dim_kor(Rp, cimek, xyr, intmax)
Rácspontok száma =  6 

Rácspontok koordinátája, Rp =  [[0, 0], [1, 0], [0, 1], [1, 1], [0, -1], [0, -2]]
első minimum = sqrt(u_1^2+v1^2)=  6.1

$H$-szerű jel sarkaiban 8 kör alakú rés

In [98]:
cimek=['Direkt rács','Egy kör alakú rés','Szerkezeti faktor','Diffrakciós kép']
#  R ---> a kor alaku res sugara 
#  a ---> racsallando, egysegnyi

Rpa=0.1  #   Rpa ---> R/a

# Rp racspontok generalasa (racsallando egysegekben):
Rp=[[0, 0], [1, 0],[0, 1],[0, -1],[1,1], [1,-1],[-1,0],[2,0]]

print('Rácspontok száma = ',len(Rp), '\n')
print('Rácspontok koordinátája, Rp = ',Rp)

xyr = [20,5,15]
intmax = [0.005,0.2, 0.005]
rajz_2dim_kor(Rp, cimek, xyr, intmax)
Rácspontok száma =  8 

Rácspontok koordinátája, Rp =  [[0, 0], [1, 0], [0, 1], [0, -1], [1, 1], [1, -1], [-1, 0], [2, 0]]
első minimum = sqrt(u_1^2+v1^2)=  6.1

$K$-szerű jel sarkaiban 5 kör alakú rés

In [99]:
cimek=['Direkt rács','Egy kör alakú rés','Szerkezeti faktor','Diffrakciós kép']
#  R ---> a kor alaku res sugara 
#  a ---> racsallando, egysegnyi

Rpa=0.1  #   Rpa ---> R/a

# Rp racspontok generalasa (racsallando egysegekben):
Rp=[[0, 0], [0, 1],[0, -1], [1, 1],[1, -1]]

print('Rácspontok száma = ',len(Rp), '\n')
print('Rácspontok koordinátája, Rp = ',Rp)

xyr = [20,5,15]
intmax = [0.005,0.2, 0.005]
rajz_2dim_kor(Rp, cimek, xyr, intmax)
Rácspontok száma =  5 

Rácspontok koordinátája, Rp =  [[0, 0], [0, 1], [0, -1], [1, 1], [1, -1]]
első minimum = sqrt(u_1^2+v1^2)=  6.1

$T$ jel sarkaiban és középen 5 kör alakú rés

In [100]:
cimek=['Direkt rács','Egy kör alakú rés','Szerkezeti faktor','Diffrakciós kép']
#  R ---> a kor alaku res sugara 
#  a ---> racsallando, egysegnyi

Rpa=0.1  #   Rpa ---> R/a

# Rp racspontok generalasa (racsallando egysegekben):
Rp=[[0, 0], [-1, 0],[1, 0],[0, -1],[0,-2]]

print('Rácspontok száma = ',len(Rp), '\n')
print('Rácspontok koordinátája, Rp = ',Rp)

xyr = [20,5,15]
intmax = [0.005,0.2, 0.005]
rajz_2dim_kor(Rp, cimek, xyr, intmax)
Rácspontok száma =  5 

Rácspontok koordinátája, Rp =  [[0, 0], [-1, 0], [1, 0], [0, -1], [0, -2]]
első minimum = sqrt(u_1^2+v1^2)=  6.1

$Y$ jel sarkaiban és középen 4 kör alakú rés

In [103]:
cimek=['Direkt rács','Egy kör alakú rés','Szerkezeti faktor','Diffrakciós kép']
#  R ---> a kor alaku res sugara 
#  a ---> racsallando, egysegnyi

Rpa=0.1  #   Rpa ---> R/a

# Rp racspontok generalasa (racsallando egysegekben):
Rp=[[0, 0], [-1, 1],[1, 1],[0, -2]]

print('Rácspontok száma = ',len(Rp), '\n')
print('Rácspontok koordinátája, Rp = ',Rp)

xyr = [20,5,15]
intmax = [0.005,0.4, 0.008]
rajz_2dim_kor(Rp, cimek, xyr, intmax)
Rácspontok száma =  4 

Rácspontok koordinátája, Rp =  [[0, 0], [-1, 1], [1, 1], [0, -2]]
első minimum = sqrt(u_1^2+v1^2)=  6.1

$N$-sokszög sarkaiban kör alakú rés

In [104]:
cimek=['Direkt rács','Egy kör alakú rés','Szerkezeti faktor','Diffrakciós kép']
#  R ---> a kor alaku res sugara 
#  a ---> racsallando, egysegnyi

Rpa=0.1  #   Rpa ---> R/a

# Rp racspontok generalasa (racsallando egysegekben):
Nr=5  #  sokszog szama
Rp=[[3*cos(2*pi*n/Nr),3*sin(2*pi*n/Nr)] for n in range(Nr) ]

print('Rácspontok száma = ',len(Rp), '\n')
print('Rácspontok koordinátája, Rp = ',around(Rp,2))

xyr = [20,5,15]
intmax = [0.005,0.5, 0.005]
rajz_2dim_kor(Rp, cimek, xyr, intmax)
Rácspontok száma =  5 

Rácspontok koordinátája, Rp =  [[ 3.    0.  ]
 [ 0.93  2.85]
 [-2.43  1.76]
 [-2.43 -1.76]
 [ 0.93 -2.85]]
első minimum = sqrt(u_1^2+v1^2)=  6.1

$N$-sokszög sarkaiban és középen kör alakú rések

In [105]:
cimek=['Direkt rács','Egy kör alakú rés','Szerkezeti faktor','Diffrakciós kép']
#  R ---> a kor alaku res sugara 
#  a ---> racsallando, egysegnyi

Rpa=0.1  #   Rpa ---> R/a

# Rp racspontok generalasa (racsallando egysegekben):
Nr=5  #  sokszog szama
phi=pi/2  # sokszog elforgatasa

Rp=[[3*cos(2*pi*n/Nr+phi),3*sin(2*pi*n/Nr+phi)] for n in range(Nr) ]
Rp.append([0,0])

print('Rácspontok száma = ',len(Rp), '\n')
print('Rácspontok koordinátája, Rp = ',around(Rp,2))

xyr = [20,5,15]
intmax = [0.005,0.5, 0.005]
rajz_2dim_kor(Rp, cimek, xyr, intmax)
Rácspontok száma =  6 

Rácspontok koordinátája, Rp =  [[ 0.    3.  ]
 [-2.85  0.93]
 [-1.76 -2.43]
 [ 1.76 -2.43]
 [ 2.85  0.93]
 [ 0.    0.  ]]
első minimum = sqrt(u_1^2+v1^2)=  6.1

4 köralakú rés random elhelyezve egy egységnyi oldalélű négyzetben.

In [25]:
3*random.random()
Out[25]:
2.0022928528520563
In [108]:
cimek=['Direkt rács','Egy kör alakú rés','Szerkezeti faktor','Diffrakciós kép']
#  R ---> a kor alaku res sugara 
#  a ---> racsallando, egysegnyi

Rpa=0.1  #   Rpa ---> R/a

# Rp racspontok generalasa (racsallando egysegekben):
Nr=5  #  racspontok szama
Rp = []

[Rp.append([3*random.random(), 3*random.random()]) for i in range(Nr)]

print('Rácspontok száma = ',len(Rp), '\n')
print('Rácspontok koordinátája, Rp = ',around(Rp,2))

xyr = [20,5,15]
intmax = [0.005,0.4, 0.005]
rajz_2dim_kor(Rp, cimek, xyr, intmax)
Rácspontok száma =  5 

Rácspontok koordinátája, Rp =  [[1.14 2.38]
 [0.28 2.83]
 [0.53 1.78]
 [2.92 1.82]
 [2.46 0.51]]
első minimum = sqrt(u_1^2+v1^2)=  6.1
In [ ]: